package org.mirrentools.attendance.console.service;

import org.mirrentools.attendance.console.service.impl.UsersServiceImpl;

import io.vertx.core.AsyncResult;
import io.vertx.core.Handler;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.jdbc.JDBCClient;
import io.vertx.ext.sql.assist.SQLExecute;
import io.vertx.ext.web.RoutingContext;

/**
 * Users数据服务接口
 *
 * @author
 *
 */
public interface UsersService {
	/**
	 * 创建一个实例
	 *
	 * @param execute
	 * @return
	 */
	static UsersService create(SQLExecute<JDBCClient> execute) {
		return new UsersServiceImpl(execute);
	}

	/**
	 * 检查用户的token是否正确
	 *
	 * @param rct
	 * @param handler
	 */
	void checkToken(RoutingContext rct, Handler<AsyncResult<JsonObject>> handler);

	/**
	 * 获取用户信息
	 *
	 * @param rct
	 * @param handler
	 */
	void get(RoutingContext rct, Handler<AsyncResult<JsonObject>> handler);

	/**
	 * 管理员获取用户列表
	 *
	 * @param rct
	 * @param handler
	 */
	void findUsers(RoutingContext rct, Handler<AsyncResult<JsonObject>> handler);

	/**
	 * 新增用户
	 *
	 * @param rct
	 * @param handler
	 */
	void post(RoutingContext rct, Handler<AsyncResult<JsonObject>> handler);
}
